#!/usr/bin/env python
# -*- coding: utf-8 -*-

##################################################################
#
#		PyAcAdmin - Sistema Gerenciador de Academia
#
# 	Este arquivo faz parte do projeto PyAcAdmin
#	http://code.google.com/p/pyacadmin/
#	Desenvolvido por: Carlos Henrique Marques da Cunha Filho
#	rickadt@gmail.com
#
##################################################################

from pysqlite2 import dbapi2 as sqlite
import os.path

class banco:
	
	########## Cria a conexão com o DB
	def con(self):
		self.sqlConnect = sqlite.connect('PyAcAdmin.db')
		self.sqlCursor = self.sqlConnect.cursor()
	
	
	######### Pega id valida no DB
	def novaId(self, campo, tabela):
		sql = "SELECT MAX(%s) FROM %s" % (campo, tabela)
		self.sqlCursor.execute(sql)
		dados = self.sqlCursor.fetchone()
		id = dados[0]
		id = id + 1
		return id
	
	
	##########
	def sqlCommit(self, sql):
		self.sqlCursor.execute(sql)
		self.sqlConnect.commit()
	
	
	##########
	def sqlSelect(self, sql):
		self.sqlCursor.execute(sql)
		return self.sqlCursor.fetchall()
	
	
	########## Checa se o DB existe, se não o cria
	def checaDB(self):
		if not os.path.exists('PyAcAdmin.db'):
			sqlConnect = sqlite.connect('PyAcAdmin.db')
			sqlCursor = sqlConnect.cursor()
	
			sql = """
			CREATE TABLE clientes (
  idClientes INTEGER NOT NULL,
  nome CHAR(150) NULL,
  endereco CHAR(150) NULL,
  telefone CHAR(15) NULL,
  cidade CHAR(100) NULL,
  CEP CHAR(10) NULL,
  RG CHAR(15) NULL,
  CPF CHAR(15) NULL,
  dataN DATE NULL,
  dataC DATE NULL,
  PRIMARY KEY(idClientes)
)"""
			sqlCursor.execute(sql)
			sqlConnect.commit()
			
			sql = """
CREATE TABLE contratos (
  idContratos INTEGER NOT NULL,
  planos_idPlanos INTEGER NOT NULL,
  clientes_idClientes INTEGER NOT NULL,
  dataI DATE NULL,
  dataF DATE NULL,
  valor DECIMAL(10,2) NULL,
  parcelas INTEGER NULL,
  PRIMARY KEY(idContratos)
)"""
			sqlCursor.execute(sql)
			sqlConnect.commit()
			
			sql = """
CREATE TABLE mensalidade (
  idMensalidade INTEGER NOT NULL,
  contratos_idContratos INTEGER NOT NULL,
  valor DECIMAL(10,2) NULL,
  dataV DATE NULL,
  dataP DATE NULL,
  PRIMARY KEY(idMensalidade)
)"""
			sqlCursor.execute(sql)
			sqlConnect.commit()
			
			sql = """
CREATE TABLE planos (
  idPlanos INTEGER NOT NULL,
  descricao VARCHAR(250) NULL,
  valor DECIMAL(10,2) NULL,
  aulasSemanais int NULL,
  PRIMARY KEY(idPlanos)
)"""
			sqlCursor.execute(sql)
			sqlConnect.commit()
			
			self.primeiroRegistro()
	
	########## Insere um registro vazio em cada tabela
	def primeiroRegistro(self):
			self.con()
			
			# Primeiro registro da tabela clientes
			sql = "INSERT INTO clientes (idClientes) VALUES (0)"
			self.sqlCommit(sql)
			
			# Primeiro registro da tabela Contratos
			sql = "INSERT INTO contratos (idContratos, planos_idPlanos, clientes_idClientes) VALUES (0, 0, 0)"
			self.sqlCommit(sql)
			
			# Primeiro registro da tabela Mensalidade
			sql = "INSERT INTO mensalidade (idMensalidade, contratos_idContratos) VALUES (0, 0)"
			self.sqlCommit(sql)
			
			# Primeiro registro da tabela Mensalidade
			sql = "INSERT INTO planos (idPlanos) VALUES (0)"
			self.sqlCommit(sql)
			
